/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package TarryDAOS;

import Herramientas.PasarelaDatos;
import Herramientas.ResultSets;
import TarryDTOS.ProductosVentaDTO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author MauricioAlanGonzalez
 */
public class ProductosVentaDAO {

    private PasarelaDatos db;
    private ResultSets res;

    public ProductosVentaDAO() {
        db = new PasarelaDatos();
        res = new ResultSets();
    }

    /**
     * ALAN GONZALEZ METODO QUE DEVUELVE TODOS LOS CLIENTES
     *
     * @return
     */
    public Vector todoProducto() {
        Vector vProductos = new Vector();
        String query = "select * from productos_venta";
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                ProductosVentaDTO producto = new ProductosVentaDTO();
                producto = res.productosVenta(rst);
                vProductos.add(producto);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProductosVentaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return vProductos;
    }

    /**
     * ALAN GONZALEZ METODO PARA DEVOLVER TODO PRODUCTO A PARTIR DE UN INDICIO
     *
     * @param indicio
     * @return
     */
    public Vector todoProductoConInidicio(String indicio) {
        Vector vProductos = new Vector();
        String query = "SELECT * FROM productos_venta WHERE productos_venta.nombre_producto LIKE '" + indicio + "%';";
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                ProductosVentaDTO producto = new ProductosVentaDTO();
                producto = res.productosVenta(rst);
                vProductos.add(producto);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProductosVentaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return vProductos;
    }

    /**
     * ALAN GONZALEZ METODO PARA OBTENER UN PRECIO DE LISTA DE UN PRODUCTO
     * DETERMINADO
     *
     * @param id
     * @return
     */
    public double precioListaProdcuto(int id) {
        double precioLista = 0.0;
        String query = "SELECT  productos_venta.precio_lista as pl  FROM productos_venta WHERE  productos_venta.id  = " + id + ";";
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            if (rst.next()) {
                precioLista = rst.getDouble("pl");
            } else {
                precioLista = 0.0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProductosVentaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return precioLista;
    }

    /**
     * ALAN GONZALEZ METODO PARA OBTENER PRODUCTO CON UNA CLAVE DETERMINADA
     *
     * @param indicio
     * @return
     */
    public Vector productoPorID(int claveProducto) {
        Vector vProductos = new Vector();
        String query = "select * from productos_venta WHERE productos_venta.id = " + claveProducto;
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                ProductosVentaDTO producto = new ProductosVentaDTO();
                producto = res.productosVenta(rst);
                vProductos.add(producto);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProductosVentaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return vProductos;
    }

    /**
     * ALAN GONZALEZ ESTE METODO ACTUALIZA LA CONFIGURACION DEL IEPS EN UN
     * PRODUCTO
     *
     * @param claveProducto
     */
    public void actualizaConfiguracionIEPS(int claveProducto, int bandera) {
        db.openDatabase();
        String query = new String();
        if (bandera == 1) {
            query = "UPDATE productos_venta SET productos_venta.IEPS = 1 WHERE productos_venta.id = " + claveProducto + ";";
        }
        if (bandera == 0) {
            query = "UPDATE productos_venta SET productos_venta.IEPS = 0 WHERE productos_venta.id = " + claveProducto + ";";
        }
        db.execute(query);
        db.closeDatabase();
    }

    /**
     * ALAN GONZALEZ METODO DEVUELVE UNA BANDERA SI UN PRODUCTO ESTA GRAVADO CON
     * IEPS
     *
     * @param claveProducto
     * @return
     */
    public int productoIEPS(int claveProducto) {
        int banderaIEPS = 0;
        db.openDatabase();
        String query = "SELECT "
                + "productos_venta.IEPS  "
                + "FROM productos_venta "
                + "WHERE productos_venta.id = " + claveProducto;
        ResultSet rst = db.executeQuery(query);
        try {
            if (rst.next()) {
                banderaIEPS = rst.getInt("IEPS");
            } else {
                banderaIEPS = 0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProductosVentaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return banderaIEPS;
    }
}
